import { IAsyncState } from './IAsyncState';
import { asTrackPromise } from './asTrackPromise';

export interface IAsyncFn {
  (): Promise<any>
}

/**
 * 执行返回 promise 的函数，并跟踪 promise 的执行过程，状态，时间点，成功失败结果
 * 灵感来自 vue 项目的 spost 规格
 */
export function asCallPromise(as: IAsyncState, asyncFn: IAsyncFn) {
  return asTrackPromise(as, asyncFn());
}
